package com.wcs.exam.controller.admin.req;

import java.io.Serializable;
import java.math.BigDecimal;
import java.io.Serial;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

/**
 * <p>
 * Admin-用户考勤-保存请求参数
 * </p>
 *
 * @author wcs
 * @since 2025-03-13
 */
@Getter
@Setter
@Accessors(chain = true)
@Schema(description = "Admin-用户考勤-保存请求参数")
public class AdminUserAttendanceSaveReq implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    @NotNull(message = "用户ID不能为空")
    @Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long userId;

    @NotNull(message = "考勤类型(1:普通考试、2:报名考试)不能为空")
    @Schema(description = "考勤类型(1:普通考试、2:报名考试)", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer attendanceType;

    @NotNull(message = "关联ID不能为空")
    @Schema(description = "关联ID", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long relateId;

    @NotNull(message = "考试记录ID不能为空")
    @Schema(description = "考试记录ID", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long examRecordId;

    @NotNull(message = "考勤考试场景(1:开考前、2:答题时抓拍、3:答题时高灵敏度人脸监测)不能为空")
    @Schema(description = "考勤考试场景(1:开考前、2:答题时抓拍、3:答题时高灵敏度人脸监测)", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer attendanceExamScene;

    @NotNull(message = "考勤方式(1:点击打卡、2:人脸识别)不能为空")
    @Schema(description = "考勤方式(1:点击打卡、2:人脸识别)", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer attendanceWay;

    @NotNull(message = "考勤通过(false:不通过、true:通过)不能为空")
    @Schema(description = "考勤通过(false:不通过、true:通过)", requiredMode = Schema.RequiredMode.REQUIRED)
    private Boolean attendancePass;

    @NotNull(message = "人脸识别调用(false:未调用、true:调用)不能为空")
    @Schema(description = "人脸识别调用(false:未调用、true:调用)", requiredMode = Schema.RequiredMode.REQUIRED)
    private Boolean faceIdCall;

    @NotNull(message = "人脸识别类型(1:活体人脸核身、2:活体人脸比对)不能为空")
    @Schema(description = "人脸识别类型(1:活体人脸核身、2:活体人脸比对)", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer faceIdType;

    @NotNull(message = "人脸识别相似度不能为空")
    @Schema(description = "人脸识别相似度", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal faceSim;

    @NotBlank(message = "用户图像不能为空")
    @Schema(description = "用户图像", requiredMode = Schema.RequiredMode.REQUIRED)
    private String userImage;

    @NotBlank(message = "最佳照片(识别返回)不能为空")
    @Schema(description = "最佳照片(识别返回)", requiredMode = Schema.RequiredMode.REQUIRED)
    private String bestImage;

    @NotBlank(message = "返回信息(识别返回)不能为空")
    @Schema(description = "返回信息(识别返回)", requiredMode = Schema.RequiredMode.REQUIRED)
    private String respMsg;

    @NotNull(message = "状态不能为空")
    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer status;
}
